package broad.gui;

import broad.bean.Objeto;
import broad.dao.DAOObjeto;
import broad.util.CaixaMensagemGUI;
import java.io.File;
import org.zkoss.zk.ui.Executions;
import java.util.List;
import java.io.FileNotFoundException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Window;
import org.zkoss.zul.Row;
import org.zkoss.zul.Rows;
import org.zkoss.zul.Filedownload;
import org.zkoss.zul.Include;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;

public class ListagemGUI extends Window{
    
    private Textbox buscaTitulo;
    private Textbox buscaAutor;
    private Textbox buscaTag;
    private Grid listarArquivos;
//    private Objeto objetoAux;
    private Include login;
//    private Button sair;

    public void onCreate() {

        buscaTitulo = (Textbox) getFellow("buscaTitulo");
        buscaAutor = (Textbox) getFellow("buscaAutor");
        buscaTag = (Textbox) getFellow("buscaTag");
        listarArquivos = (Grid) getFellow("listarArquivos");
        listarArquivos.setVisible(false);
        login = (Include) getFellow("login");
//        sair = (Button) getFellow("sair");
//        listarArquivos();

    }

    public void listarArquivos() {
        listarArquivos.getRows().detach();
        listarArquivos.appendChild(new Rows());

        List<Objeto> lista = new DAOObjeto().buscarArquivos(buscaTitulo.getValue(), buscaAutor.getValue(), buscaTag.getValue());
        listarArquivos.setVisible(true);

        for (final Objeto objeto : lista) {

            Row linhaPrincipal = null;
            linhaPrincipal = new Row();

            //titulo
            Label nTitulo = new Label(objeto.getLomTitle());
            linhaPrincipal.appendChild(nTitulo);

            //autor
            Label nAutor = new Label(objeto.getAutor());
            linhaPrincipal.appendChild(nAutor);

            //tag
            Label nTag = new Label(objeto.getLomKeyword());
            linhaPrincipal.appendChild(nTag);

            //download
            Button nDownload = new Button("");
            nDownload.setStyle("background-color:#FFFFFF; border-width:0;");
            nDownload.setImage("img/download.png");
            nDownload.addEventListener("onClick", new EventListener() {

                public void onEvent(Event event) throws Exception {
//                    objetoAux = objeto;
//                    baixarArquivo(objetoAux);
                }
            });
            linhaPrincipal.appendChild(nDownload);

            //link
            Button nLink = new Button("");
            nLink.setStyle("background-color:#FFFFFF; border-width:0;");
            nLink.setImage("img/download.png");
            nLink.addEventListener("onClick", new EventListener() {
                
                public void onEvent(Event event) throws Exception {
                    new ModalLinkObjetoGUI().exibir(objeto);
                }
            });
            linhaPrincipal.appendChild(nLink);
            
            //adiciona a linha no Grid
            listarArquivos.getRows().appendChild(linhaPrincipal);
        }

        buscaTitulo.setValue("");
        buscaAutor.setValue("");
        buscaTag.setValue("");
    }

    public void baixarArquivo(Objeto objeto) {
        if (objeto.getLink() == null)
            new CaixaMensagemGUI().caixaInformacao("Não há arquivo associado ao objeto", "Erro");
        else
            try {
                //Filedownload.save(new File("C:\\teste\\teste.jpg"), "image/jpg");
                Filedownload.save(new File(objeto.getLink()), "image/jpg");
            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            }
    }
}